#ifndef CONTROLADOR_USUARIO_H
#define CONTROLADOR_USUARIO_H

#include <string>
#include <set>
#include "interfaces/IControladorUsuario.h"
#include "interfaces/IControladorRecurso.h"
#include "controllers/ControladorRecurso.h"
#include "models/Usuario.h"


class ControladorUsuario: public IControladorUsuario {

	private:			
            set<Usuario*> usuariosSistema;
			Usuario * usr;
			IControladorRecurso* CR;

	public:	
			ControladorUsuario();
			void setInterfazControladorRecurso(IControladorRecurso* CR);
			bool ingresarNickName(string nickName);
			void ingresarDatosUsuario(string, DateTime);
			bool cancelarAltaUsuario();
			void verInformacionUsuario();
			void elegirUsuarioSistema(string nickName);
			bool elegirAutorModificacionArchivo(string modificador);
			bool esColaborador(string nickName);
			bool elegirUsuarioColaborador(IControladorRecurso * iCR, string nickName);
			void encontrarUsuario(string nickName);
			bool registrarUsuarioColaborador(string nickName);
			bool registrarUsuarioColaboradorRaiz(IControladorRecurso * iCR, string nickName);
			void elegirUsuario(string nickName);
			Usuario* obtenerUsuarioDelSistema(string nickName);
			void imprimirInfoRecursos();
			void imprimirUsuariosSistema();
			void notificarUsuarios(IControladorRecurso * iCR, string accion);
			void imprimirNicknamesUsuarios();
			void esUsuarioDelSistema(string nickName);
			bool permisosModificacion(string modificador, string nombre, string ubicacion);
			bool esPrefijoRuta(string ruta1, string ruta2);
			void noHayUsuarios();
			void validarAlphaNumericos(string palabra);
			//~ControladorUsuario();
};

#endif
